第2章 ソフトウェア開発への理解を深めるメタファ
進行担当: tommy.icon
躍動感あふれるメタファが、現象を余すところなく描写している
第2章はこんな内容だった
メタファがソフトウェア開発の世界やその外でどう使われてきたか
ソフトウェアに対するメタファの例
メタファは知的道具箱の道具である
変数を箱に例えることについて
2.1 メタファの重要性
モデリング
よく理解できないものをよく理解しているものと照らし併せてテーマへの理解が深まる
真の姿を写し、概念全体を把握しやすくする点に力がある
科学の歴史は、メタファの力を借りた発見に満ちている
ベンゼンの分子構造
気体の力学理論
光の波動理論
こちらは「エーテル」の存在の発見に至らなかった
良いメタファと悪いメタファが存在する
tommy.icon 確かにわかり易さを重視して単純化した例えに走ったばかりに元の意味から離れてしまうケースもある感じ
ガリレオとアリストテレス派の学者による振り子の話
コペルニクス転換とコンピュータ中心説からデータベース中心説への変化
科学の歴史は「より間違った」メタファから「より正しい」メタファへの大きな転換の歴史
ニュートン力学からアインシュタイン理論
ソフトウェア開発は若く、相補または相反するメタファが入り乱れた状態
2.2 ソフトウェアメタファの使用法
メタファは「アルゴリズム」というより「ヒューリスティクス(発見的)」 アルゴリズムは直接的、ヒューリスティクスは間接的
2.3 一般的なソフトウェアメタファ
ソフトウェア開発の著名人によるメタファの例
サイエンス
芸術
プロセス
車を運転するようなもの
ゲーム
バザール
庭いじり
映画『白雪姫と7人の小人』を撮るようなもの
農業
狼男のハンティング
タール抗で恐竜と溺れること
「コードを書く」ということからくる「手紙を書く」というメタファ
個人作業や小規模プロジェクト以外には的を射ない
一般に3分の2、多い場合は約90%が最初のリリースが終わったあとの作業
「1つ捨てるつもりで。どうせ捨てることになるのだから」
「種をまいて作物を育てること」というメタファ
一度に少しずつという考え方以上の何ものでもない
外部からの追加または取り込みを重ねて成長すること、あるいは規模を広げること
インクリメンタル方式については 第29章 29.2 を参照
構築する (build)
犬小屋を建てる場合と家を建てる場合のプロセスの複雑度の違い
家を建てることとソフトウェア開発との共通点
完成しているものは組み立てる必要がない
独自のカスタマイズが発生することがある
計画立案が重要である
きちんと計画されたプロジェクトは、詳細が後から変更されることを見込んでいる
tommy.icon これは矛盾しているようで大事な話と思った
tommy.icon ソフトウェア開発が建築に例えられることは良くあるけど(特にウォーターフォール・モデルにおいて顕著な気がする)著者としてはこれが一番しっくりきている感じかな? 道具箱のメタファはいつでも使えるようにしておく
メタファを組み合わせることもできる
相互排他的ではないため組み合わせて利用できる
使い方を誤ることもある
しかし知的道具箱になくてはならない威力がある